package com.beidu.lottery.call.service.portal;

import com.beidu.lottery.call.entity.PortalActivityRule;
import com.beidu.lottery.call.entity.dto.ActivityRegDTO;
import com.beidu.lottery.call.entity.vo.ActivityRegResultVO;

/**
 * <p>
 * 报名活动 服务类
 * </p>
 *
 * @author 北渡
 * @since 2023-08-23
 */
public interface ActivityRegService {

    /**
     * 报名数据预提交（Producer）
     *
     * @param regDTO 报名数据
     * @param rule   活动规则
     * @author 北渡
     */
    ActivityRegResultVO regPreSubmit(ActivityRegDTO regDTO, PortalActivityRule rule);

    /**
     * 报名数据提交（Consumer）
     *
     * @param regDTO 报名数据
     * @param rule   活动规则
     * @author 北渡
     */
    void regSubmit(ActivityRegDTO regDTO, PortalActivityRule rule);

    /**
     * 报名数据修改
     *
     * @author 北渡
     */
    boolean regUpdate(ActivityRegDTO regDTO);

    /**
     * 报名结果查询
     *
     * @param id 活动ID
     * @author 北渡
     */
    ActivityRegResultVO queryRegResult(Integer id);

    /**
     * 查询用户是否已报名
     *
     * @param id 活动ID
     * @return true:是, false:否
     * @author 北渡
     */
    boolean hasRegistered(Integer id);

}
